%File: ~/OOP/element/truss/Truss.tex
%What: "@(#) Element.tex, revA"

\noindent {\bf Files}   \\
\indent \#include $<\tilde{ }$/element/truss/Truss.h$>$  \\

\noindent {\bf Class Declaration}  \\
\indent class Truss: public Element \\

\noindent {\bf Class Hierarchy} \\
\indent TaggedObject \\
\indent MovableObject \\
\indent\indent DomainComponent \\
\indent\indent\indent Element \\
\indent\indent\indent\indent {\bf Truss} \\

\noindent {\bf Description}  \\
\indent The Truss class provides the truss abstraction. The Truss
object can exist in one, two or three-dimesional problems. Each Truss
object is associated with two Node objects and a UniaxialMaterial
object. \\ 

\noindent {\bf Class Interface} \\
\indent\indent // Constructor \\
\indent\indent {\em Truss(int tag, \\
\indent\indent\indent\indent int dimension, \\
\indent\indent\indent\indent int Nd1, int Nd2,  \\
\indent\indent\indent\indent UniaxialMaterial &theMaterial, \\
\indent\indent\indent\indent double A, double M=0.0); } \\
\indent\indent {\em Truss();}  \\ \\
\indent\indent // Destructor \\
\indent\indent {\em ~$\tilde{}$Truss();}\\ \\
\indent\indent // Public Methods  \\
\indent\indent {\em int getNumExternalNodes(void) const;} \\
\indent\indent {\em const ID \&getExternalNodes(void);} \\
\indent\indent {\em int getNumDOF(void);}\\
\indent\indent {\em int commitState(void);} \\{
\indent\indent {\em int revertToLastCommit(void);} \\{
\indent\indent {\em int revertToStart(void);} \\{
\indent\indent {\em Matrix \&getTangentStiff(void);} \\{
\indent\indent {\em Matrix \&getSecantStiff(void);} \\{
\indent\indent {\em Matrix \&getDamp(void);} \\
\indent\indent {\em Matrix \&getMass(void);} \\
\indent\indent {\em void zeroLoad(void);	}\\
\indent\indent {\em int addLoad(const Vector \&load);} \\
\indent\indent {\em Vector \&getResistingForce(void);} \\
\indent\indent {\em Vector \&getResistingForceIncInertia(void);} \\
\indent\indent {\em void Print(OPS_Stream \&s, int flag) const;} \\


\noindent {\bf Constructor}  \\
\indent\indent {\em Truss(int tag,  \\
\indent\indent\indent\indent int dimension, \\
\indent\indent\indent\indent int Nd1, int Nd2,  \\
\indent\indent\indent\indent UniaxialMaterial &theMaterial, \\
\indent\indent\indent\indent double A, double M=0.0); } \\

\indent {\em Truss();}  \\
This is the constructor invoked by an FEM\_ObjectBroker object. It
constructs an empty Truss element. The {\em recvSelf()} method must be
invoked on the object for it to set the internal data. \\

\noindent {\bf Destructor} \\
\indent {\em virtual~ $\tilde{}$Truss();}\\ 

\noindent {\bf Public Methods }  \\
\indent {\em int getNumExternalNodes(void) const;} \\
Returns 2; \\

\indent {\em const ID \&getExternalNodes(void);} \\
Returns an ID object of size $2$ containing the two node identifiers $Nd1$
and $Nd2$. \\

\indent {\em int getNumDOF(void);}\\
To return the number of dof associated with the Truss. This depends on
the dimension of the problem and the number of dof associated with the
nodes.  \\

{\em int commitState(void);} \\
The Truss element returns the result of invoking {\em commitState()}
on it's associated UniaxialMaterial object. \\

{\em int revertToLastCommit(void);} \\
The Truss element returns the result of invoking {\em revertToLastCommit()}
on it's associated UniaxialMaterial object. \\

{\em int revertToStart(void);} \\
The Truss element returns the result of invoking {\em revertToStart()}
on it's associated UniaxialMaterial object. \\

{\em Matrix \&getTangentStiff(void);} \\

{\em Matrix \&getSecantStiff(void);} \\

{\em Matrix \&getDamp(void);} \\

{\em Matrix \&getMass(void);} \\

{\em void zeroLoad(void);}\\
Does nothing. \\

{\em int addLoad(const Vector \&load);} \\

{\em Vector \&getResistingForce(void);} \\

{\em Vector \&getResistingForceIncInertia(void);} \\

{\em void Print(OPS_Stream \&s, int flag) const;} \\




